//package com.by.wx.job;
//
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.extra.mail.MailUtil;
//import com.by.wx.model.script.CsTask;
//import com.by.wx.process.task.TaskProcessServ;
//import com.by.wx.redis.RedisManage;
//import com.by.wx.utils.CsAirScriptUtils;
//import com.by.wx.utils.PushMsgUtils;
//import com.by.wx.vo.script.CsFlatsVo;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * 定时运行
// *
// * @ClassName ScriptPushJob
// * @Date 2025/1/2
// * @Author Blue
// */
//@Slf4j
//@Component
//@RequiredArgsConstructor(onConstructor = @__(@Autowired))
//public class ScriptPushJob {
//
//    private final RedisManage redisManage;
//    private final PushMsgUtils pushMsgUtils;
//    private final TaskProcessServ taskProcessServ;
//
//    /**
//     * 定时加载任务id并运行
//     * 上一个任务运行完 2.5分钟后在运行
//     */
//    @Scheduled(fixedDelay = 150000)
//    public void loadTaskId() {
//        log.info("定时加载任务id并运行s...");
//        List<CsTask> script = taskProcessServ.getTasks();
//        if (CollUtil.isEmpty(script)) {
//            return;
//        }
//        script.parallelStream().forEach(task -> {
//            // 构建脚本参数对象
//            String str = CsAirScriptUtils.buildMailParams("229588902258", "858536", task.getDate(), task.getDeparture(), task.getArrival());
//            log.info("参数:{}", str);
//            // 发送邮件
//            MailUtil.send("34945177@qq.com", "触发", str, false);
//        });
//
//        log.info("定时加载任务id并运行e...");
//    }
//
//    /**
//     * 定时检测任务对应的航班数据-1分钟
//     */
//    @Scheduled(fixedRate = 60000)
//    public void checkFlats() {
//        log.info("定时检测任务对应的航班数据s...");
//        // 从Redis中加载所有的任务对象
//        List<CsTask> script = taskProcessServ.getTasks();
//
//        for (CsTask csTask : script) {
//            // 通过当前任务对象 获取 对应的 航班数据对象
//            List<CsFlatsVo> csFlats = redisManage.getList(csTask.flatsKey() + "*", CsFlatsVo.class);
//            if (CollUtil.isEmpty(csFlats)) {
//                log.info("无航班数据对象：:{}", csTask.flatsKey());
//                continue;
//            }
//
//            for (CsFlatsVo csFlat : csFlats) {
//                // 判断是否推送(有更新或者第一次推送)
//                if (csFlat.getUpdate()) {
//                    // 判断阈值
//                    log.info("用户唯一标识:{}", csTask.getUserId());
//                    log.info("航班号:{}", csFlat.getFlightNo());
//                    log.info("座位数量:{}", csFlat.getSeatCount());
//
//                    // 给微信发消息
//                    for (String userId : csTask.getUserId()) {
//                        pushMsgUtils.textMsg(userId, String.format("航班号：%s,机舱类型: %s,座位数量：%s", csFlat.getFlightNo(), csFlat.getCabin(), csFlat.getSeatCount()));
//                    }
//
//                    // 修改redis中的是否推送
//                    csFlat.setUpdate(false);
//                    redisManage.set(csFlat.key(), csFlat);
//                }
//            }
//        }
//        log.info("定时检测任务对应的航班数据e...");
//    }
//
//}
